package net.pulseproject.commons.midi;

import net.pulseproject.commons.midi.mediator.EnablerCollectionWrapper;
import net.pulseproject.commons.midi.mediator.EnablerCollectionWrapperImpl;
import net.pulseproject.commons.midi.mediator.MediatorBuilder;
import net.pulseproject.commons.midi.mediator.MediatorBuilderImpl;
import net.pulseproject.commons.midi.mediator.MidiReceiverBuilder;
import net.pulseproject.commons.midi.mediator.MidiReceiverBuilderImpl;

import com.google.inject.AbstractModule;
import com.google.inject.Scopes;

public class RouterMidiGuiceModule extends AbstractModule {

	@Override
	protected final void configure() {
		this.bind(MessageAnalyzer.class).to(MessageAnalyzerImpl.class).in(Scopes.SINGLETON);
		this.bind(MidiSystem.class).to(MidiSystemStaticWrapper.class).in(Scopes.SINGLETON);
		this.bind(MidiDeviceCache.class).to(MidiDeviceCacheImpl.class).in(Scopes.SINGLETON);
		this.bind(MediatorBuilder.class).to(MediatorBuilderImpl.class).in(Scopes.SINGLETON);
		this.bind(MidiReceiverBuilder.class).to(MidiReceiverBuilderImpl.class).in(Scopes.SINGLETON);
		this.bind(EnablerCollectionWrapper.class).to(EnablerCollectionWrapperImpl.class).in(Scopes.SINGLETON);
	}

}
